Neural networks may be used in a variety of different applications. For example, a neural network may be used to perform tasks including, but not limited to, speech recognition, visual objection recognition and/or localization, image reconstruction, anomaly detection, other applications where pattern recognition may be needed, and the like. Spiking neural networks are a particular class of neural networks suited for processing data with a time and/or sequential aspect. For example, spiking neural networks may be used to process audio such as speech and/or video.
Within a spiking neural network, “spikes” are transmitted between neurons. This characteristic of spiking neural networks may be leveraged to implement power-optimized neural networks. These power optimized neural networks may be implemented in a variety of different types of devices and/or systems including, but not limited to, consumer devices, servers, cloud server applications, and the like.
A Spiking Convolutional Neural Network (SCNN) and a Spiking Recurrent Neural Network (SRNN) belong to a particular subclass of spiking neural networks. SCNNs and SRNNs use the network topology and optimized training infrastructure of CNNs and RNNs. SCNNs and SRNNs, however, are converted to a spiking implementation for execution. The inputs provided to a spiking neural network consist of spike trains. More particularly, each input neuron receives a series of spikes as input. As noted, information is transmitted across the spiking neural network as spikes from one layer to the next. The final output is typically a train of output spikes. The output spikes may be counted or otherwise converted into the needed result, which may be a classification or other determination about the received input.